const { Configuration, OpenAIApi } = require('openai');
const readline = require('readline');
const dotenv = require('dotenv');

// 加载环境变量
dotenv.config();

// 创建命令行界面
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

// 初始化 OpenAI API
const configuration = new Configuration({
  apiKey: process.env.OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);

// 主函数
async function main() {
  console.log('欢迎使用简单 AI 助手！输入 "退出" 结束对话。');
  
  // 检查 API 密钥
  if (!configuration.apiKey) {
    console.error('错误：请在 .env 文件中设置 OPENAI_API_KEY 环境变量');
    process.exit(1);
  }

  try {
    rl.question('请输入您的问题: ', async (question) => {
      if (question.toLowerCase() === '退出') {
        rl.close();
        return;
      }

      try {
        const response = await openai.createCompletion({
          model: "text-davinci-003",
          prompt: question,
          temperature: 0.7,
          max_tokens: 256,
        });
        
        console.log('\nAI 回答:');
        console.log(response.data.choices[0].text.trim());
        console.log('\n');
        
        // 递归调用，继续对话
        main();
      } catch (error) {
        if (error.response) {
          console.error(error.response.status, error.response.data);
        } else {
          console.error(`发生错误: ${error.message}`);
        }
        main(); // 发生错误后继续对话
      }
    });
  } catch (error) {
    console.error(`发生错误: ${error.message}`);
    rl.close();
  }
}

// 启动应用
main();

// 关闭事件处理
rl.on('close', () => {
  console.log('感谢使用 AI 助手，再见！');
  process.exit(0);
});
